package com.bestcem.xm.member.service.mq.send;

import com.bestcem.xm.member.mq.message.*;

import java.util.Date;

/**
 * @author leilei.zang
 */
public interface MemberMessageSendService {
    /**
     * 发送分组规则修改
     */
    void groupConditionModSend(GroupingMessage message);

    /**
     * 联系人创建、联系人更新-调度至分组
     */
    void memberCreationUpdSend(MemberCreationUpdMessage message);

    /**
     * 联系人 本地缓存队列监听
     */
    void memberDbSend(SourceCardMessage message);

    /**
     * 删除联系人
     */
    void memberDeletedSend(MemberDeletedMessage message);

    /**
     * 发送打标签消息
     */
    void memberSliceSend(MemberSliceMessage message);

    /**
     * 联系人、发布微信同步信息
     */
    void memberWechatMemberScheduleSend(WechatMemberSyncMessage message);

    /**
     * 分组删除
     */
    void groupDeletedSend(GroupDeletedMessage message);

    /**
     * 创建联系人-fanout
     */
    void memberCreatedSend(MemberMessage message);

    /**
     * 更新联系人-fanout
     */
    void memberUpdatedSend(MemberMessage message);

    /**
     * 微信公众号同步打开与关闭
     */
    void memberWechatMemberSyncSend(WechatMemberSyncMessage message);

    /**
     * 微信公众号同步打开与关闭
     */
    void syncWechatAccountInfoSend(SyncWechatAccountInfoMessage message);

    /**
     * 监听联系人延迟队列消息/group member 重新分组
     **/
    void memberRegroupMemberSend(MemberCreationUpdMessage memberCreationUpdMessage, Date delayDate);

    /**
     * 监听联系人延迟队列消息/group members 重新分组
     **/
    void memberRegroupMembersSend(GroupingMessage groupingMessage, Date delayDate);

    /**
     * 微信公众号同步打开与关闭/延时
     */
    void wechatMemberSyncDelaySend(WechatMemberSyncMessage message, Date delayDate);

    /**
     * 微信同步联系人(调度) 延迟队列
     */
    void wechatMemberScheduleSyncDelay(WechatMemberSyncMessage message, Date delayDate);

    /**
     * 联系人/延时队列/微信公众号同步打开与关闭信息
     */
    void wechatMemberSyncDelayDelaySend(WechatMemberSyncMessage message, Date delayDate);

    /**
     * 保存联系人足迹
     */
    void footprintSaveSend(FootprintMessage message);

    /**
     * 联系人/发送消息member.member_created_by_respondent_submit
     */
    void memberCreatedByRespondentSubmitSend(SequenceMessage message);

    void startTicketSurveyRespondentSubmitSend(RespondentDataMessage message);

}
